/***********************************************************************************
 * 文件名： mbre_config.h
 * 作者： 刘言
 * 版本： 1
 * 说明：
 * 		Smart Mist Communication Protocol (MBRE) 通信协议的实现。
 *      mbre的配置文件，不要在其它文件中include。
 *      将此文件复制到你的项目文件夹中，然后重命名为 mbre_config.h。
 * 修改记录：
 * 	2021/2/4: 初版。 刘言。
***********************************************************************************/
#ifndef _MBRE_CONFIG_H_
#define _MBRE_CONFIG_H_

#include "app_config.h"
#include "mcu.h"


// 参数配置

// 接收缓存字节数，收到的数据区将缓存在此
#define _MBRE_LINK_RX_BUFF_SIZE   _EVRC_MAX_RX_LEN

// 发数据时一包允许的最大数据长度，数值越大需要的局部变量越大
#define _MBRE_MAX_TX_DATA_LEN     _EVRC_MAX_TX_LEN

// 定义表示启用缓存是否满了的检查(MBRE_EV_BUFF_FULL事件)
//#define _MBRE_LINK_USE_BUFF_CHECK     

// 定义表示启用CRC16校验
#define _MBRE_LINK_USE_CRC16      

// 定义本机角色。
// 0-主机，1-从机，2-主机或从机可用 Mbre_SetRole 切换（默认从机）
// 定义成0或者1可以节省代码量
#define _MBRE_ROLE           1


// 移植需要实现的API

#define _MBRE_ONLY_SEND_BYTE

#define _MbreLink_PortInit()        // 已在 Board_Init() 统一初始化
#define _MbreLink_PortSendByte(u8_byte)         Uart_WriteByte(&RemoteUart, u8_byte)
#ifndef _MBRE_ONLY_SEND_BYTE
#define _MbreLink_PortSend(data_ptr, length)    
#endif
// 另外，收到数据后需要调用 MbreLink_EvReceivedData ，详见 mbre.h 。

#if _MBRE_ROLE != 0

#include "evrc_gen.h"
#include "components/umi/umi_static.h"
// 获取本机ID的API，一般是读取FLASH中的一个字节。
// 收到的数据包中的ID只有与本机ID匹配时才会解析数据。
#define _Mbre_GetLocalID()  Storage.DevInfo.Id

// 设置（修改）本机ID的API，一般是把新ID保存在FLASH中。
STATIC_FORCE_IN_LINE void _Mbre_SetLocalID(u8 new_id)
{
    Umi_Write((umi_addr_t)&Storage.DevInfo.Id, &new_id, 1);
}

#define _Mbre_GetUid()      Mcu_GetUid()

#define _Mbre_GetUidLength()    Mcu_GetUidLength()
#endif

#ifdef _MBRE_LINK_USE_CRC16
// 获取CRC16计算结果
#define _Mbre_GetCRC16(data_ptr, lenght)    0X5555
#endif



#endif
